package com.jeesite.modules.jydq.service;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import com.jeesite.common.mybatis.mapper.query.QueryType;
import com.jeesite.modules.file.entity.FileUpload;
import com.jeesite.modules.sys.utils.UserUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jeesite.common.entity.Page;
import com.jeesite.common.service.CrudService;
import com.jeesite.modules.jydq.entity.JydqProduct;
import com.jeesite.modules.jydq.dao.JydqProductDao;
import com.jeesite.modules.file.utils.FileUploadUtils;

/**
 * 商品信息表Service
 * @author dong
 * @version 2025-03-20
 */
@Service
public class JydqProductService extends CrudService<JydqProductDao, JydqProduct> {
	
	/**
	 * 获取单条数据
	 * @param jydqProduct
	 * @return
	 */
	@Override
	public JydqProduct get(JydqProduct jydqProduct) {
		return super.get(jydqProduct);
	}
	
	/**
	 * 查询分页数据
	 * @param jydqProduct 查询条件
	 * @param jydqProduct page 分页对象
	 * @return
	 */
	@Override
	public Page<JydqProduct> findPage(JydqProduct jydqProduct) {
		jydqProduct.sqlMap().getWhere()
				.andBracket("name", QueryType.LIKE, jydqProduct.getKeyword())
				.or("category_name", QueryType.LIKE, jydqProduct.getKeyword())
				.or("brand", QueryType.LIKE, jydqProduct.getKeyword())
				.endBracket();
		return super.findPage(jydqProduct);
	}
	
	/**
	 * 查询列表数据
	 * @param jydqProduct
	 * @return
	 */
	@Override
	public List<JydqProduct> findList(JydqProduct jydqProduct) {
		return super.findList(jydqProduct);
	}
	
	/**
	 * 保存数据（插入或更新）
	 * @param jydqProduct
	 */
	@Override
	@Transactional
	public void save(JydqProduct jydqProduct) {
		super.save(jydqProduct);
		// 保存上传图片
		FileUploadUtils.saveFileUpload(jydqProduct, jydqProduct.getId(), "jydqProduct_image");
		String images = FileUploadUtils.findFileUpload(jydqProduct.getId(), "jydqProduct_image").stream().map(FileUpload::getFileUrl).collect(Collectors.joining(","));
		jydqProduct.setImage(images);
		super.update(jydqProduct);
	}
	
	/**
	 * 更新状态
	 * @param jydqProduct
	 */
	@Override
	@Transactional
	public void updateStatus(JydqProduct jydqProduct) {
		super.updateStatus(jydqProduct);
	}
	
	/**
	 * 删除数据
	 * @param jydqProduct
	 */
	@Override
	@Transactional
	public void delete(JydqProduct jydqProduct) {
		super.delete(jydqProduct);
	}

	public Page<JydqProduct> myFavorite(JydqProduct jydqProduct) {
		jydqProduct.sqlMap().getWhere()
				.andBracket("name", QueryType.LIKE, jydqProduct.getKeyword())
				.or("category_name", QueryType.LIKE, jydqProduct.getKeyword())
				.or("brand", QueryType.LIKE, jydqProduct.getKeyword())
				.endBracket();
		jydqProduct.setUserCode(UserUtils.getUser().getUserCode());
		List<JydqProduct> jydqProductList = dao.myFavorite(jydqProduct);
		Page<JydqProduct> page = jydqProduct.getPage();
		page.setList(jydqProductList);
		return page;
	}
}